package avicit.bdp.dgs.metadata.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dgs.metadata.dto.MetadataBaseVersionDetailDTO;
import avicit.bdp.dgs.metadata.vo.MetadataTableVo;
import com.github.pagehelper.Page;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface MetadataBaseVersionDetailDao extends BaseDAO<MetadataBaseVersionDetailDTO> {


  /**
   * 批量新增
   *
   * @param list 保存对象集合
   * @return int
   */
  int batchSave(@Param("list") List<MetadataBaseVersionDetailDTO> list);

  /**
   * 批量更新对象
   *
   * @param list 批量更新对象集合
   * @return int
   */
  int batchUpdate(@Param("list") List<MetadataBaseVersionDetailDTO> list);

  /**
   * 获取当前数据源的基线版本内发生版本变化的总数
   *
   * @param dataSourceId 数据源ID
   * @return 版本变化的总数
   */
  Integer getBaseVersionUpdateNum(@Param("dataSourceId") String dataSourceId);

  Page<MetadataTableVo> getUpdateDetailPageList(
      @Param("dataSourceId") String dataSourceId,
      @Param("keyWords") String keyWords,
      @Param("type") Integer type);

  List<MetadataBaseVersionDetailDTO> getBaseVersionList(@Param("idList") List<String> idList);

  void batchDeleteByBaseVersionIdAndMetadataIds(
      @Param("metadataBaseVersionId") String metadataBaseVersionId,
      @Param("metaDataIdList") List<String> metaDataIdList);

  List<String> selectMetadataIdList(@Param("dataSourceId") String dataSourceId);
}
